/*
 * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package com.sun.corba.se.impl.presentation.rmi;

import java.lang.reflect.Proxy;

import com.sun.corba.se.spi.presentation.rmi.PresentationManager;
import com.sun.corba.se.spi.presentation.rmi.DynamicStub;

import com.sun.corba.se.spi.orbutil.proxy.InvocationHandlerFactory;
import com.sun.corba.se.spi.orbutil.proxy.LinkedInvocationHandler;

public class StubFactoryProxyImpl extends StubFactoryDynamicBase {
    public StubFactoryProxyImpl(PresentationManager.ClassData classData,
                                ClassLoader loader) {
        super(classData, loader);
    }

    public org.omg.CORBA.Object makeStub() {
        // Construct the dynamic proxy that implements this stub
        // using the composite handler
        InvocationHandlerFactory factory = classData.getInvocationHandlerFactory();
        LinkedInvocationHandler handler =
                (LinkedInvocationHandler) factory.getInvocationHandler();
        Class[] interfaces = factory.getProxyInterfaces();
        DynamicStub stub = (DynamicStub) Proxy.newProxyInstance(loader, interfaces,
                handler);
        handler.setProxy((Proxy) stub);
        return stub;
    }
}
